Before dynamic VT-d page table for hvm guest (changeset 20152),
need_iommu is only used for PV guest. And it maps pages into VT-d for
PV guest in get_page_type and grant table. Now need_iommu is used
both hvm and pv guests, this patch makes those code still only for PV
guest, because it needn't to map pages there for hvm domain.
Signed-off-by: Weidong Han <Weidong.han@intel.com>
{
/* Special pages should not be accessible from devices. */
struct domain *d = page_get_owner(page);
- if ( d && unlikely(need_iommu(d)) )
+ if ( d && !is_hvm_domain(d) && unlikely(need_iommu(d)) )
{
if ( (x & PGT_type_mask) == PGT_writable_page )
iommu_unmap_page(d, mfn_to_gmfn(d, page_to_mfn(page)));
goto undo_out;
}
- if ( need_iommu(ld) &&
+ if ( (!is_hvm_domain(ld) && need_iommu(ld)) &&
!(old_pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask)) &&
(act_pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask)) )
{
act->pin -= GNTPIN_hstw_inc;
}
- if ( need_iommu(ld) &&
+ if ( (!is_hvm_domain(ld) && need_iommu(ld)) &&
(old_pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask)) &&
!(act->pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask)) )
{